/**
 * * 14/05/2010
 * @author Kal�u Caminha
 * @author William Rodrigues
 * @author Rodrigo Coelho
 */

package semantico;

/**
 *
 * @author CoelhoNB
 */
public class Vetor extends TipoVariavel{

    protected int numeroDimensoes;

    protected int numeroDimensoesTemp;

    public int getNumeroDimensoesTemp() {
        return numeroDimensoesTemp;
    }

   

    public void setNumeroDimensoesTemp(int numeroDimensoesTemp) {
        this.numeroDimensoesTemp = numeroDimensoesTemp;
    }


    
    protected int tipoIndice;
    protected int tipoIndiceDim1;
    protected int tipoIndiceDim2;
    /* Usar constantes de tipoPreDefinido */
    protected int tipoElementos;

    protected String limiteInferior;
    protected String limiteSuperior;
    protected String limiteInferiorDim1;
    protected String limiteSuperiorDim1;
    protected String limiteInferiorDim2;
    protected String limiteSuperiorDim2;

    public Vetor() {
        super(VETOR);
    }

    public String getLimiteInferior() {
        return limiteInferior;
    }

    public void setLimiteInferior(String limiteInferior) {
        this.limiteInferior = limiteInferior;
    }

    public String getLimiteInferiorDim1() {
        return limiteInferiorDim1;
    }

    public void setLimiteInferiorDim1(String limiteInferiorDim1) {
        this.limiteInferiorDim1 = limiteInferiorDim1;
    }

    public String getLimiteInferiorDim2() {
        return limiteInferiorDim2;
    }

    public void setLimiteInferiorDim2(String limiteInferiorDim2) {
        this.limiteInferiorDim2 = limiteInferiorDim2;
    }

    public String getLimiteSuperior() {
        return limiteSuperior;
    }

    public void setLimiteSuperior(String limiteSuperior) {
        this.limiteSuperior = limiteSuperior;
    }

    public String getLimiteSuperiorDim1() {
        return limiteSuperiorDim1;
    }

    public void setLimiteSuperiorDim1(String limiteSuperiorDim1) {
        this.limiteSuperiorDim1 = limiteSuperiorDim1;
    }

    public String getLimiteSuperiorDim2() {
        return limiteSuperiorDim2;
    }

    public void setLimiteSuperiorDim2(String limiteSuperiorDim2) {
        this.limiteSuperiorDim2 = limiteSuperiorDim2;
    }

    public int getNumeroDimensoes() {
        return numeroDimensoes;
    }

    public void setNumeroDimensoes(int numeroDimensoes) {
        this.numeroDimensoes = numeroDimensoes;
    }

    public int getTipoElementos() {
        return tipoElementos;
    }

    public void setTipoElementos(int tipoElementos) {
        this.tipoElementos = tipoElementos;
    }

    public int getTipoIndice() {
        return tipoIndice;
    }

    public void setTipoIndice(int tipoIndice) {
        this.tipoIndice = tipoIndice;
    }

    public int getTipoIndiceDim1() {
        return tipoIndiceDim1;
    }

    public void setTipoIndiceDim1(int tipoIndiceDim1) {
        this.tipoIndiceDim1 = tipoIndiceDim1;
    }

    public int getTipoIndiceDim2() {
        return tipoIndiceDim2;
    }

    public void setTipoIndiceDim2(int tipoIndiceDim2) {
        this.tipoIndiceDim2 = tipoIndiceDim2;
    }

    public static int getCADEIA() {
        return CADEIA;
    }

    public static void setCADEIA(int CADEIA) {
        TipoVariavel.CADEIA = CADEIA;
    }


    public static int getVETOR() {
        return VETOR;
    }

    public static void setVETOR(int VETOR) {
        TipoVariavel.VETOR = VETOR;
    }

	public String toString(){
		String dimensao2 = "";
		if(this.limiteInferiorDim2 != null){
			dimensao2=", "+this.limiteInferiorDim2+".."+limiteSuperiorDim2+" ["+this.getTipoIndiceDim2()+"]";
		}
		return "VETOR["+this.limiteInferiorDim1+" .."+limiteSuperiorDim1+dimensao2+" ["+this.getTipoIndiceDim1()+"]] de "+this.getTipoElementos()+" ["+this.getNumeroDimensoes()+"]";
	}

	@Override
	public Vetor clone(){
		Vetor clone = new Vetor();
		clone.setLimiteInferior(this.getLimiteInferior());
		clone.setLimiteSuperior(this.getLimiteSuperior());
		clone.setLimiteInferiorDim1(this.getLimiteInferiorDim1());
		clone.setLimiteInferiorDim2(this.getLimiteInferiorDim2());
		clone.setLimiteSuperiorDim1(this.getLimiteSuperiorDim1());
		clone.setLimiteSuperiorDim2(this.getLimiteSuperiorDim2());

		clone.setNumeroDimensoes(this.getNumeroDimensoes());
		clone.setTipoElementos(this.getTipoElementos());
        clone.setTipoIndice(this.getTipoIndice());
		clone.setTipoIndiceDim1(this.getTipoIndiceDim1());
		clone.setTipoIndiceDim2(this.getTipoIndiceDim2());
		return clone;
	}
  

    

}